package verwaltung;

import java.util.Date;
import java.util.List;

import javax.persistence.EntityManager;
import javax.persistence.Persistence;

public class Datenbank_JPA implements Verwaltung{
	
	private EntityManager em = Persistence.createEntityManagerFactory("EQVerwaltung")
			.createEntityManager();

	@Override
	public void newStandort(String Name, String Anschrift, String Stadt)
			throws VerwaltungException {
		Standort s = new Standort();
		s.setName(Name);
		s.setAnschrift(Anschrift);
		s.setStadt(Stadt);
		em.persist(s);
		em.getTransaction().begin();
		em.getTransaction().commit();
	}

	@Override
	public void standortentfernen(Standort s) throws VerwaltungException {
		
		try {
			em.remove(s);
			em.getTransaction().begin();
			em.getTransaction().commit();
		} catch (Exception e) {
			throw new VerwaltungException("Kann Standort nicht entvernen", e);
		}
		
	}

	@Override
	public List<Standort> getStandorte() throws VerwaltungException {
		return em.createNamedQuery("allestandort", Standort.class).getResultList();
	}

	public void newGeraet(String Seriennummer, Standort standort,
			String Bezeichnung, String Kommentar, Date Datum)
			throws VerwaltungException {
		Geraet g = new Geraet(Seriennummer,standort,Bezeichnung,Kommentar,Datum);
		
		em.persist(g);
		em.getTransaction().begin();
		em.getTransaction().commit();
	}

	@Override
	public void geraetentvernen(Geraet g) throws VerwaltungException {
		em.remove(g);
		em.getTransaction().begin();
		em.getTransaction().commit();
	}

	@Override
	public List<Geraet> getGeraete() throws VerwaltungException {
		return em.createNamedQuery("allegeraete", Geraet.class).getResultList();
	}

	@Override
	public void geraetupdate(Geraet g) throws VerwaltungException {
		em.persist(g);
		em.getTransaction().begin();
		em.getTransaction().commit();
	}

	@Override
	public Standort suchestandort(String n) throws VerwaltungException {
		// TODO Auto-generated method stub
		return null;
	}

}
